////////////////////////////////////////////////////////////////////////////////

#ifndef _CLIENTENGINE_H_
#define _CLIENTENGINE_H_

////////////////////////////////////////////////////////////////////////////////

class ServerStatePacket;
class ServerInfoPacket;
class ServerEventPacket;
class Client;

////////////////////////////////////////////////////////////////////////////////



/** Game client engine
*
*  @author   Roman Pasechnik
*  @since    Jun 04th, 2009
*  @updated  Nov 11th, 2009
*/
class ClientEngine
{
////////////////////////////////////////////////////////////////////////////////

public:

////////////////////////////////////////////////////////////////////////////////


    /** Constructor */
    ClientEngine();


    /** Destructor */
    ~ClientEngine();


    /** Start client engine */
    void Start( Client* _client );


////////////////////////////////////////////////////////////////////////////////


    /** Updates server info */
    void UpdateServerInfo( const ServerInfoPacket& _serverInfoPacket );


    /** Listen server event */
    void ListenServerEvent( const ServerEventPacket& _serverEventPacket );


////////////////////////////////////////////////////////////////////////////////

private:

////////////////////////////////////////////////////////////////////////////////


    /** Client interface */
    Client* m_Client;


////////////////////////////////////////////////////////////////////////////////
};


////////////////////////////////////////////////////////////////////////////////

#endif

////////////////////////////////////////////////////////////////////////////////
